package com.rd.controller;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.rd.pojo.Dept;
import com.rd.pojo.Emp;
import com.rd.pojo.Job;
import com.rd.service.IDeptService;
import com.rd.service.IEmpService;
import com.rd.service.IJobService;
import com.rd.util.QiniuOssUtils;
import com.rd.util.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;
import java.util.UUID;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author jianan
 * @since 2024-06-06
 */
@RestController
@RequestMapping("/emp")
public class EmpController {
    @Autowired
    private IJobService jobService;



    @Autowired
    private IEmpService empService;

    @Autowired
    private IDeptService deptService;

    @PostMapping("/add")
    public R add(Emp emp, MultipartFile myfile) throws IOException {
        //参数1：对象
        //参数2：上传的文件
        // 创建七牛云OSS工具实例
        QiniuOssUtils utils = new QiniuOssUtils();
        // 生成唯一标识作为图片的存储键
        String key = UUID.randomUUID().toString();
        // 上传图片到七牛云并获取访问路径
        String path = utils.upload(myfile.getInputStream(), key);
        // 设置员工图片路径
        emp.setPhotourl(path);
        //获取这个职位对应的部门编号
        int jobid = emp.getJobid();
        //根据职位id查询职位信息
        Job job = jobService.getById(jobid);
        emp.setDeptid(job.getDeptid());
        //调用save方法，将员工对象存入到数据库中
        boolean b = empService.save(emp); // 保存歌手信息到数据库
        if (b) {
            // 若保存成功，则返回成功信息及员工数据
            return R.ok().setData(emp).setMsg("添加成功");
        }
        utils.delete(key); // 若保存失败，删除已上传的图片
        return R.fail().setMsg("添加失败");
    }
    @GetMapping("list")
    public R list(@RequestParam("page") int page,
                  @RequestParam("limit") int limit) {
        //1.创建分页插件工具
        Page<Emp> pageUtil = new Page<>(page, limit);
        //2.调用IService接口提供page方法进行分页查询
        Page<Emp> empPage = empService.page(pageUtil);
        //3.获取总记录个数
        long total = empPage.getTotal();
        //4.获取List集合(存储页面展示的数据)
        List<Emp> list=empPage.getRecords();
        //5.处理list集合
        if(list!=null&&list.size()>0){
            //遍历list集合
            for (Emp emp : list) {
                Dept dept = deptService.getById(emp.getDeptid());
                emp.setDept(dept);
                Job  job = jobService.getById(emp.getJobid());
                emp.setJob(job);
            }
        }
        //6.封装R对象返回给前端页面
        return  R.ok().setData(list).setCount(total);
    }


}
